"""
不同子类对象 调用相同的父类方法 产生执行不同效果

以继承和重写父类方法为前提
"""

"""
单一职责，开放，封闭
"""

class Dog(object):
    def __init__(self,name):
        self.name = name

    def game(self):
        print(f'{self.name}蹦蹦跳跳的玩耍')


class XiaoTianDog(Dog):

    def game(self):
        print(f'{self.name}飞到天上去玩耍')

    def demo(self):  #提醒使用静态方法
        print('haha')

class Person(object):
    def __init__(self,name):
        self.name = name

    def game_with_dog(self,dog:Dog):
        # 让狗玩耍
        dog.game()
        print(f'{self.name}和{dog.name}快乐玩耍')


# wangcai = Dog('旺财')
wangcai = XiaoTianDog('哮天犬')
wangcai.game()

xiaoming = Person('小明')
xiaoming.game_with_dog(wangcai)

#对象不同，所以相同行为的结果不同












